import {
  request
} from "../../request/index.js";
// ====asyc语法的引入语句，注意：此语句必须单个引入，不能全局引入
import regeneratorRuntime from '../../lib/runtime/runtime';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    goodsObj:{}
  },
  // ==商品对象，用于点击预览功能取数据
  GoodsInfo:{},

  // ==从商品列表传递过来的goods_id,在这里接收
  onLoad: function (options) {
    const {goods_id}=options;
    // ====调用函数时，传递给了参数
    this.getGoodsDetail(goods_id);
    
  },

  // ==获取商品详情数据（根据传递过来的goods_id,请求对应的商品信息）
  async getGoodsDetail(goods_id){
    const goodsObj = await request({url:"/goods/detail",data:{goods_id}});
    this.GoodsInfo=goodsObj;
    this.setData({
      // ====将真正使用的数据传递到本地，提高小程序性能；
      // ====接上:注意-goodsObj两个是不一样的，一个全局，一个局部
      goodsObj:{
        pics:goodsObj.pics,
        goods_name:goodsObj.goods_name,
        goods_price:goodsObj.goods_price,
        // ====解决.webp苹果手机不支持的问题，在确保后台有jpg图片的时候，进行字符串替换
        goods_introduce:goodsObj.goods_introduce.replace(/\.webp/g,'.jpg')
      }
    })
  },

  //== 点击预览效果事件的实现
  handlePreviewImage(e){
    // ====构造previewImage需要的传入的连接数组
    const urls=this.GoodsInfo.pics.map(v=>v.pics_mid);
    wx.previewImage({
      current:e.currentTarget.dataset.url,
      urls: urls,
    });

  },

  // == 点击加入购物车，点击事件的处理
  handleCartAdd(){
    // ==== 获取缓存不需要先让缓存事先存在，不会报错；默认缓存为空时，格式为字符串，其他字符类型需要指定格式举例为||[]
    let cart = wx.getStorageSync("cart")||[];
    // ==== 判断商品是否存在，findIndex函数，找到时返回指针，找不到返回-1
    let index = cart.findIndex(v=>v.goods_id===this.GoodsInfo.goods_id);
    if(index===-1){
      // ====goodsinfo中新增一个数据类别num，用于记录商品数量；push函数实现数据的添加
      this.GoodsInfo.num=1;
      this.GoodsInfo.checked=true;
      cart.push(this.GoodsInfo);
    }else{
      cart[index].num++;
    }
    // ====数据存入缓存区，用于在购物车页面数据渲染
    wx.setStorageSync("cart", cart);
    wx.showToast({
      title: '加入成功',
      icon: 'success',
      mask: true,
    });
      
  }

})